package com.zrrd.learn.chapter09.collectlianxi;

import java.util.*;

/**
 * 面向对象与ListSet
 *
 * @author wrn
 * @version 1.0
 * @date 2023/8/16 8:32
 */

public class ObjectAndListSet {

    /**
     * 设计一个简单的学生管理系统，其中需要定义一个Student类来表示学生，包含学生的姓名和年龄属性。然后，使用一个List集合来存储多个学生对象，并实现以下功能：
     *
     * 添加新学生到集合中。
     * 显示所有学生的姓名和年龄。
     */
    public static void question01(){
        List<Student> Stuinfor = new ArrayList<>();

        Student s1 = new Student("小红", 12);
        Student s2 = new Student("小橙", 14);
        Student s3 = new Student("小黄", 13);
        Student s4 = new Student("小绿", 10);

        Stuinfor.add(s1);
        Stuinfor.add(s2);
        Stuinfor.add(s3);
        Stuinfor.add(s4);

        Iterator<Student> it = Stuinfor.iterator();
        while (it.hasNext()) {
            Student s = it.next();
            System.out.println(s.getStuname() + "," + s.getStuage());
        }
    }

    /**
     * 编写一个程序，从用户输入中读取一段文本，然后将文本中的单词进行去重操作，最后使用一个Set集合来存储不重复的单词，并输出去重后的单词列表。
     */
    public static void question02(){
        System.out.println("请输入输入字符串为");
        Scanner s1 = new Scanner(System.in);

        String str1 = s1.nextLine();
        System.out.println("用户输入的字符串为："+str1);

        HashSet<String> hs=new HashSet<>();

        String[] strarr = str1.split(" ");

        for (int i = 0; i < strarr.length; i++) {
            hs.add(strarr[i]);
        }

        for (String s:hs){
            System.out.println(s);
        }

    }

    /**
     * 设计一个简单的图书馆管理系统，其中需要定义一个Book类来表示图书，包含图书的标题和作者属性。使用一个Set集合来存储图书对象，并实现以下功能：
     *
     * 添加新书到图书馆。
     * 查找图书库中是否存在特定标题的书籍。
     * 显示图书馆中所有的书籍信息。
     */
    public static void question03(){

        HashSet<Book> hs=new HashSet<>();

        Book b1 = new Book("三国演义","罗贯中");
        Book b2 = new Book("西游记","吴承恩");
        Book b3 = new Book("水浒传","施耐庵");
        Book b4 = new Book("红楼梦","曹雪芹");

        hs.add(b1);
        hs.add(b2);
        hs.add(b3);
        hs.add(b4);

        for (Book b : hs){
            System.out.println(b.getBookname() + "," + b.getBookwriter());
        }

        System.out.println("\n请输入要查询的书籍");
        Scanner s1 = new Scanner(System.in);
        String str = s1.nextLine();

        int num = 0;
        for (Book b : hs) {
            if (b.getBookname().equals(str)){
                num+=1;
            }
        }

        if (num!=0){
            System.out.println("有");
        }else {
            System.out.println("没有");
        }

    }

    /**
     * 设计一个简单的购物车程序，其中需要定义一个Product类来表示商品，包含商品的名称和价格属性。使用一个List集合来存储购物车中的商品，并实现以下功能：
     *
     * 添加商品到购物车。
     * 计算购物车中所有商品的总价。
     */
    public static void question04(){

        List<Product> list = new ArrayList<>();

        Product p1 = new Product("饼干",8);
        Product p2 = new Product("牛奶",13);
        Product p3 = new Product("矿泉水",2);
        Product p4 = new Product("烤肠",2);

        list.add(p1);
        list.add(p2);
        list.add(p3);
        list.add(p4);

        double sum=0;
        for (Product p : list) {
            sum+=p.getProprice();
        }
        System.out.println("商品总价为"+sum);

    }

    public static void question05(){
        List<Employee> list = new ArrayList<>();

        Employee e1 = new Employee("小红",2800);
        Employee e2 = new Employee("小橙",3000);
        Employee e3 = new Employee("小黄",2500);
        Employee e4 = new Employee("小绿",3500);

        list.add(e1);
        list.add(e2);
        list.add(e3);
        list.add(e4);

        for (Employee e : list){
            System.out.println(e.getEmname()+","+e.getEmpay());
        }

    }

    public static void main(String[] args) {
//        question01();
//        question02();
//        question03();
//        question04();
        question05();


    }
}
